package com.jiahua.utils.string;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ValidationUtil {

	// 「ASCII文字」のみ
	public static final String MATCH_ASCII = "^[\\u0020-\\u007E]+$";
	// 「英字」のみ
	public static final String MATCH_ALPHA = "^[a-zA-Z]+$";
	// [数字」のみ
	public static final String MATCH_NUMBER = "^[0-9]+$";
	// 「ひらがな」のみ
	public static final String MATCH_HIRAGANA = "^[\\u3040-\\u309F]+$";
	// 「カタカナ」のみ
	public static final String MATCH_KATAKANA = "^[\\u30A0-\\u30FF]+$";
	// 「半カタカナ」のみ
	public static final String MATCH_HANKANA = "^[\\uFF65-\\uFF9F]+$";
	// 「全角文字」のみ
	//public static final String MATCH_ZENKAKU = "^[\\u3040-\\u30FF]+$";
	public static final String MATCH_ZENKAKU = "^[^\\x01-\\x7E\\xA1-\\xDF]+$";
	// メールアドレス（簡易）
	public static final String MATCH_MAIL = "([a-zA-Z0-9][a-zA-Z0-9_.+\\-]*)@(([a-zA-Z0-9][a-zA-Z0-9_\\-]+\\.)+[a-zA-Z]{2,6})";
	// ＵＲＬ
	public static final String MATCH_URL = "^(https?|ftp)(:\\/\\/[-_.!~*\\'()a-zA-Z0-9;\\/?:\\@&=+\\$,%#]+)$";

	public static final String HIRAGANA_CODES = "\\u3040-\\u309F";

	public static final String KATAKANA_CODES = "\\u30A0-\\u30FF";
	
	public static final String KANJI01_CODES = "\\u0000-\\u007f";
	public static final String KANJI02_CODES = "\\uff60-\\uff8f";
	
    /** 全角文字のみ */
    //private static final String MATCH_ZENKAKU = "^[\\u3040-\\u30FF]+$";

	// 「指定コードのみ」とマッチングする正規表現を返す
	public static String toMatchRegex(String codes) {
		return "^[" + codes + "]+$";
	}

	// 「指定コード以外が含まれる」とマッチングする正規表現を返す
	public static String toNotMatchRegex(String codes) {
		return ".*[^" + codes + "].*";
	}

	public static boolean isZen(String str) {
		String pattern = "/^[^\u0000-\u007f\uff60-\uff8f]+$/";
		// 判定するパターンを生成
		Pattern p = Pattern.compile(pattern);
		Matcher m = p.matcher(str);
		return m.find();
	}

	public static void main(String args[]) {

		String str = "新規";
		
		String age = "^\\x01-\\x7E\\xA1-\\xDF";

		if (str.matches(toMatchRegex(MATCH_ZENKAKU))) {
			System.out.println("一致");
		} else {
			System.out.println("不一致");
		}

//		if (str.matches(toMatchRegex(HIRAGANA_CODES + KATAKANA_CODES))) {
//			System.out.println("一致");
//		} else {
//			System.out.println("不一致");
//		}

//		String num = "123456";
//
//		if (num.matches(toMatchRegex(MATCH_NUMBER))) {
//			System.out.println("一致");
//		} else {
//			System.out.println("不一致");
//		}

	}
}
